﻿#ifndef CTIMESERIESDB_H
#define CTIMESERIESDB_H

#include <QObject>
#include <QVariant>
#include <QMutex>
#include <QTimer>

#if defined (WIN32)
#include <db.h>

#include "../../common/quicklz.h"

class CTimeSeriesDB : public QObject
{
    Q_OBJECT

public:
    explicit CTimeSeriesDB(QObject *parent = nullptr);
    ~CTimeSeriesDB();

    /// 打开指定数据库文件
    bool openDB(QString dbpath);
    /// 检测数据库是否已经打开
    inline bool isOpening(void) { return m_dbisOpened; }
    /// 设置是否定时刷新到数据库
    void setEnableSync(bool isenable,int msec=30000);
    /// 得到是否定时器刷新到数据库
    inline bool isEnableSync(void) { return m_isEnableSync; }
    /// 插入或者改变数据
    bool putData(QString key,QString data);
    /// 得到数据
    bool getData(QString key,QString& data);
    /// 刷新缓存到硬盘
    void sync(void);

signals:
    /// 处理日志消息
    void on_signalLog(QString msg);

private slots:
    void tsdb_pdate();

private:
    DB *m_dbp;
    int dbp_ret;
    QMutex m_msdblock;
    bool m_dbisOpened;                      /**< 数据库是否已经打开 */
    bool m_isEnableSync;                    /**< 是否启用定时刷新缓存到硬盘 */
    QTimer m_updateTimer;
};

#endif

#endif // CTIMESERIESDB_H
